home *** CD-ROM | disk | FTP | other *** search
/ Greenhouse Effect Detection Expriment / NASA Greenhouse Effect Detection Expriment 1992 - Disc 2.iso / software / dos / cdf22pc / src / tools / curses / readme.now < prev    next >
Encoding:
Text File  |  1991-12-23  |  17.6 KB  |  357 lines

  1.                    PCCURSES v.1.4 Release Notes - 900114
  2.             ===================================================
  3.  
  4.   This is the release note for the fifth version of PCcurses, v.1.4. Below
  5. this note, the release notes for v.1.0 - v.1.3 are included. Read those
  6. first.
  7.  
  8.   In PCcurses v.1.4, both portability improvements and bugfixes have been
  9. made. The files have been changed to allow lint-free compilation with
  10. MicroSoft 'C' v.5.1, and with Turbo 'C' v.2.0. The source should still
  11. compile without problems on older compilers, although this has not been
  12. verified.
  13.  
  14.   The makefiles have been changed to suit both the public release and the
  15. author, who maintains a special kind of libraries for himself. In the case
  16. of MicroSoft 'C', changes were done in the makefile to lower the warning
  17. level to 2 (was 3). This was to avoid ANSI warnings which are abundant
  18. because PCcurses does not attempt to follow strict ANSI 'C' standard.
  19.  
  20.   BUG FIXES FROM V.1.3 TO V.1.4:
  21.  
  22.   !!!IMPORTANT CHANGE!!!
  23.  
  24.   The definitions for OK and ERR in curses.h were exchanged. This was done
  25. to be more consistent with UNIX versions. Also, it permits functions like
  26. newwin() and subwin() to return 0 (=NULL) when they fail due to memory
  27. shortage. This incompatibility with UNIX curses was pointed out by Fred C.
  28. Smith. If you have tested success/failure by comparisons to anything other
  29. than ERR and OK, your applications will need to be be changed on that
  30. point. Sorry... but presumably most of you used the symbolic constants?
  31.  
  32.   (END OF IMPORTANT CHANGE)
  33.  
  34.   Fred also pointed out a bug in the file update.c. The bug caused the
  35. first character printed after 'unauthorized' screen changes (like during a
  36. shell escape, for example) to be placed at the wrong screen position. This
  37. happened even if the normal precautions (clear / touch / refresh) were
  38. taken. The problem has now been fixed.
  39.  
  40.   PCcurses is currently also being used on a 68000 system with hard-coded
  41. ESCape sequences for ANSI terminals. However, int's used by the 68000 C
  42. compiler are 32 bits. Therefore int's have been turned into short's
  43. wherever possible in the code (otherwise all window structures occupy twice
  44. as much space as required on the 68000). This does not affect PC versions
  45. since normally both int's and short's are 16 bits for PC C compilers.
  46.  
  47.   At some places in the source code there are references made to the 68000
  48. version. There are also a makefile, a curses68.c file, and a curses68.cmd
  49. file. These are for making, low-level I/O, and linking commands when
  50. building the 68000 version. These files are probably useful to no-one but
  51. the author, since it is very specific for it's special hardware
  52. environment. Still in an effort to keep all curses-related sources in one
  53. place they are included. Note however that PCcurses will not officially
  54. support a non-PC environment.
  55.  
  56.   The file cursesio.c, which was included in the package at revision level
  57. 1.2, and which was to be an alternative to the cursesio.asm file, has been
  58. verified to behave incorrectly in the function _curseskeytst(). The problem
  59. was that the value of 'cflag' does not contain the proper data for the test
  60. that is attempted. Furthermore, neither Turbo'C' or MicroSoft'C' allows any
  61. way to return the data that is needed, and consequently you should not use
  62. cursesio.c. The best solution is to simply use the ASM version. In v.1.2
  63. and v.1.3, the user could edit the makefile to select which version he
  64. wanted to use. The makefiles in v.1.4 have removed this possiblity forcing
  65. the use of the ASM file, and cursesio.c has been dropped from the
  66. distribution.
  67.  
  68.   A bug in the wgetstr() function caused PCcurses to echo characters when
  69. reading a keyboard string, even if the echo had been turned off. Thanks to
  70. Per Foreby at Lund University, Sweden, for this. Per also reported bugs
  71. concerning the handling of characters with bit 8 set. Their ASCII code were
  72. considered as lower than 32, so they were erased etc. like control
  73. characters, i.e. erasing two character positions. The control character
  74. test was changed to cope with this.
  75.  
  76.   The overlay() and overwrite() functions were changed so that the
  77. overlaying window is positioned at it's 'own' coordinates inside the
  78. underlying window (it used to be at the underlying window's [0,0]
  79. position). There is some controversy about this - the documentation for
  80. different curses versions say different things. I think the choice made is
  81. the most reasonable.
  82.  
  83.   The border() and wborder() functions were changed to actually draw a
  84. border, since this seems to be the correct behaviour of these functions.
  85. They used to just set the border characters to be used by box(). These
  86. functions are  not present in standard BSD UNIX curses.
  87.  
  88.   The subwin() function previously did not allow the subwindow to be as big
  89. as the original window in which it was created. This has now been fixed.
  90. There was also the problem that the default size (set by specifying
  91. numlines or numcols (or both) as 0 made the resulting actual size 1
  92. line/column too small.
  93.  
  94.   There were a few spelling errors in function names, both in the function
  95. declarations and in curses.h. This was reported by Carlos Amaral at INESC
  96. in Portugal. Thanks! There was also an unnecessary (but harmless) parameter
  97. in a function call at one place.
  98.  
  99.  
  100.  
  101.                    PCCURSES v.1.3 Release Notes - 881005
  102.             ===================================================
  103.  
  104.   This is the release note for the fourth version of PCcurses, v.1.3. Below
  105. this note, the release notes for v.1.0, v.1.1 and v.1.2 are included. Read
  106. those first.
  107.  
  108.   The file 'border.c' is now included. It allows you to explicitely specify
  109. what characters should be used as box borders when the box() functions are
  110. called. If the new border characters are non-0, they override the border
  111. characters specified in the box() call. In my understanding, this
  112. functionality is required for AT&T UNIX sV.3 compatibility. Thanks for this
  113. goes to Tony L. Hansen (hansen@pegasus.UUCP) for posting an article about
  114. it on UseNet (newsgroup comp.unix.questions; his posting was not related at
  115. all to PCcurses).
  116.  
  117.   The only other difference between v.1.2 and v.1.3 is that the latter has
  118. been changed to avoid warning diagnostics if the source files are compiled
  119. with warning switches on (for MicroSoft this means '-W3', for Turbo'C' it
  120. means '-w -w-pro'). Of these, the Turbo'C' warning check is clearly to be
  121. used rather than MicroSoft, even if neither of them comes even close to a
  122. real UNIX 'lint'. Some of the warnings in fact indicated real bugs, mostly
  123. functions that did not return correct return values or types.
  124.  
  125.   The makefiles for both MSC and TRC have been modified to produce warning
  126. messages as part of normal compilation.
  127.  
  128.  
  129.  
  130.  
  131.                    PCCURSES v.1.2 Release Notes - 881002
  132.             ===================================================
  133.  
  134.   This is the release note for the third version of PCcurses, v.1.2. Below
  135. this note, the release notes for v.1.0 and v.1.1 are included. Read those
  136. first.
  137.  
  138.   The changes from v.1.1 to v.1.2 are minor. The biggest change is that
  139. there was a bug related to limiting the cursor movement if the application
  140. tried to move it outside the screen (something that should not be done
  141. anyway). Such erronous application behaviour is now handled appropriately.
  142.  
  143.   All modules have been changed to have a revison string in them, which
  144. makes it easier to determine what version is linked into a program (or what
  145. library version you have).
  146.  
  147.   There is now a 'cursesio.c' file. That file does the same as
  148. 'cursesio.asm' (i.e. it provides the interface to the lower-level system
  149. I/O routines). It is written in 'C' and thus it is (possibly) more portable
  150. than the assembler version (but still not so portable since it uses 8086
  151. INT XX calls directly). When one creates new curses libraries, one chooses
  152. whether to use the assembler or the 'C' version of cursesio. The choice is
  153. made by commenting out the appropriate dependencies for cursesio.obj, near
  154. the end of the makefiles.
  155.  
  156.   There is now a 'setmode.c' file. That file contains functions that save
  157. and restore terminal modes. They do it into other variables than do
  158. savetty() and resetty(), so one should probably use either
  159. savetty()/resetty() or the new functions only - and not mix the both ways
  160. unless one really knows what one does.
  161.  
  162.   Diff lists vs v.1.0 are no longer included in the distribution. The make
  163. utility still is. PCcurses v.1.2 still compiles with MicroSoft 'C' v.4.0,
  164. and with Borland Turbo 'C' v.1.0. There is as far as I know no reason to
  165. believe that it does not compile under MicroSoft 'C' v.3.0 and 5.x, or
  166. Turbo-'C' v.1.5, but this has not been tested.
  167.  
  168.   There are two makefile's included, one for MicroSoft 'C', one for
  169. Turbo-'C'. They are both copies of my personal makefile's, and as such they
  170. reflect the directory structure on my own computer. This will have to be
  171. changed before you run make. Check $(INCDIR) and $(LIBDIR) in particular,
  172. and make the choice of ASM or 'C' cursesio version as mentioned above (the
  173. distribution version uses the 'C version of cursesio).
  174.  
  175.   The manual file (curses.man) has been changed at appropriate places.
  176.  
  177.   I would like to thank the following persons for their help:
  178.  
  179.       Brandon S. Allbery (alberry@ncoast.UUCP)
  180.           for running comp.binaries.ibm.pc (at that time)
  181.           and comp.source.misc.
  182.  
  183.       Steve Balogh (Steve@cit5.cit.oz.AU)
  184.           for writing a set of manual pages and posting
  185.           them to the net.
  186.  
  187.       Torbjorn Lindh
  188.           for finding bugs and suggesting raw
  189.           character output routines.
  190.  
  191.       Nathan Glasser (nathan@eddie.mit.edu)
  192.           for finding and reporting bugs.
  193.  
  194.       Ingvar Olafsson (...enea!hafro!ingvar)
  195.           for finding and reporting bugs.
  196.  
  197.       Eric Rosco (...enea!ipmoea!ericr)
  198.           for finding and reporting bugs.
  199.  
  200.       Steve Creps (creps@silver.bacs.indiana.edu)
  201.           for doing a lot of work - among others
  202.           posting bug fixes to the net, and writing
  203.           the new cursesio.c module.
  204.  
  205.       N. Dean Pentcheff (dean@violet.berkeley.edu)
  206.           for finding bugs and rewriting cursesio.asm
  207.           for Turbo 'C' 1.5.
  208.  
  209.   Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff)
  210.                (jeff@ads.arpa)
  211.       has had a shareware version of curses deliverable since about half a
  212.       year before I released PCcurses 1.0 on UseNet. He is very concerned
  213.       about confusion between the two packages, and therefore any
  214.       references on the network should make clear whether they reference
  215.       Dean's PCcurses or Larsson's PCcurses.
  216.  
  217.  
  218.  
  219.                    PCCURSES v.1.1 Release Notes - 880306
  220.             ===================================================
  221.  
  222.   This is the release note for the second version of PCcurses, v.1.1. Below
  223. this note, the release note for v.1.0 is included. Read that first. The
  224. changes from v.1.0 to v.1.1 are minor. There are a few bug fixes, and new
  225. (non-portable) functions for verbatim IBM character font display have been
  226. added (in charadd.c and charins.c). The manual file (curses.man) has been
  227. changed at appropriate places.
  228.  
  229.   In the file v10tov11.dif there are listings of the differencies between
  230. version 1.0 and 1.1. The diff listings are in UNIX diff(1) format.
  231.  
  232.   Version 1.1 compiles with Turbo 'C' v.1.0, as well as MicroSoft 'C' v.3.0
  233. and v.4.0. On the release disk there is a make.exe utility which is very
  234. similar to UNIX make (If the package was mailed to you, the make utility
  235. will be in uuencoded format - in make.uu - and must be uudecoded first). It
  236. is much more powerful than MicroSoft's different MAKE'S; the latter ones
  237. will NOT generate libraries properly if used with the PCcurses makefiles.
  238.  
  239.   There are three makefiles:
  240.  
  241.       makefile        generic MSC 3.0 makefile
  242.       makefile.ms     MSC 4.0 makefile
  243.       makefile.tc     Turbo 'C' 1.0 makefile
  244.  
  245.   To make a library with for example Turbo 'C', make directories to hold .H
  246. and .LIB files (these directories are the 'standard places'), edit
  247. makefile.tc for this, and type
  248.  
  249.       make -f makefile.tc all
  250.  
  251. and libraries for all memory models will be created in the .LIB directory,
  252. while the include files will end up in the .H directory. Also read what is
  253. said about installation below!
  254.  
  255.  
  256.  
  257.  
  258.                    PCCURSES v.1.0 Release Notes - 870824
  259.             ===================================================
  260.  
  261.  
  262.   This is the release notes for the PCcurses v.1.0 cursor/window control
  263. package. PCcurses offers the functionality of UNIX curses, plus some
  264. extras. Normally it should be possible to port curses-based programs from
  265. UNIX curses to PCcurses on the IBM PC without changes. PCcurses is a port/
  266. rewrite of Pavel Curtis' public domain 'ncurses' package. All the code has
  267. been re-written - it is not just an edit of ncurses (or UNIX curses). I
  268. mention this to clarify any copyright violation claims. The data structures
  269. and ideas are very similar to ncurses. As for UNIX curses, I have not even
  270. seen any sources for it.
  271.  
  272.  For an introduction to the use of 'curses' and it's derivatives, you
  273. should read 'Screen Updating and Cursor Movement Optimization: A Library
  274. Package' by Kenneth C. R. C. Arnold, which describes the original Berkely
  275. UNIX version of curses. It is available as part of the UNIX manuals. The
  276. other source of information is 'The Ncurses Reference Manual' by Pavel
  277. Curtis. The latter is part of Curtis' ncurses package.
  278.  
  279.   The only other documentation provided is a 'man' page which describes all
  280. the included functions in a very terse way. In the sources, each function
  281. is preceded by a rather thourough description of what the function does. I
  282. didn't have time to write a nice manual/tutorial - sorry.
  283.  
  284.   PCcurses is released as a number of source files, a man page, and a make
  285. file. A uuencoded copy of a 'make' utility, and a manpage for the 'make' is
  286. also provided to make it easier to put together PCcurses libraries. Even if
  287. you are not interested in PCcurses, it may be worthwhile to grab the make.
  288.  
  289.   The makefile assumes the presence of the MicroSoft 'C' compiler (3.0 or
  290. 4.0), MicroSoft MASM and LIB, plus some MS-DOS utilities. The reason for
  291. supplying MAKE.EXE is that the MicroSoft 'MAKE:s' are much inferior to a
  292. real UNIX make. The supplied make is a port of a public domain make,
  293. published on UseNet. It is almost completely compatible with UNIX make.
  294. When generating the curses libraries, the makefile will direct make to do
  295. some directory creating and file copying, and then re-invoke itself with
  296. new targets. The workings of the makefile are not absolutely crystal clear
  297. at first sight... just start it and see what it does.
  298.  
  299.   For portability, the curses libraries depend on one assembler file for
  300. access to the BIOS routines. There is no support for the EGA, but both CGA,
  301. MGA, and the HGA can be used. The libraries are originally for MicroSoft
  302. 'C', but all C modules should be portable right away. In the assembler
  303. file, segment names probably need to be changed, and possibly the parameter
  304. passing scheme. I think Turbo C will work right away - as far as I
  305. understand, all it's conventions are compatible with MicroSoft C.
  306.  
  307.   There are some parts left out between ncurses and PCcurses. One is the
  308. support for multiple terminals - not very interesting on a PC anyway.
  309. Because we KNOW what terminal we have, there is no need for a termcap or
  310. termio library. PCcurses also has some things that neither curses nor
  311. ncurses have. Compared to the original UNIX curses, PCcurses has lots of
  312. extras.
  313.  
  314.   The BIOS routines are used directly, which gives fast screen updates.
  315. PCcurses does not do direct writes to screen RAM - in my opinion it is a
  316. bit ugly to rely that much on hardware compatibility. Anyone could fix
  317. that, of course...
  318.  
  319.   One of the more serious problems with PCcurses is the way in which
  320. normal, cbreak, and raw input modes are done. All those details are in the
  321. 'charget' module - I do raw I/O via the BIOS, and perform any buffering
  322. myself. If an application program uses PCcurses, it should do ALL it's I/O
  323. via PCcurses calls, otherwise the mix of normal and PCcurses I/O may mess
  324. up the display. I think my code is reasonable... comments are welcome,
  325. provided you express them nicely...
  326.  
  327.   To install, copy all files to a work directory, edit 'makefile' to define
  328. the standard include and library file directory names of your choice (these
  329. directories must exist already, and their path names must be relative to
  330. the root directory, not to the current one). You must also run uudecode on
  331. make.uu, to generate MAKE.EXE. You can do that on your PC, if you have
  332. uudecode there, otherwise you can do it under UNIX and do a binary transfer
  333. to the PC. When you have MAKE.EXE in your work directory (or in your /bin
  334. directory), type make.
  335.  
  336.   Make will now create 4 sub-directories (one for each memory model), copy
  337. some assembler include files into them, copy two include files to your
  338. include directory, CHDIR to each sub-directory and re-invoke itself with
  339. other make targets to compile and assemble all the source files into the
  340. appropriate directories. Then the library manager is run to create the
  341. library files in your desired library directory. Presto!
  342.  
  343.   If you only want to generate a library for one memory model, type 'make
  344. small', 'make large', etc. The name of the memory model must be in lower
  345. case, like in the makefile.
  346.  
  347.   I think the package is fairly well debugged - but then again, that's what
  348. I always think. It was completed in May-87, and no problems found yet. Now
  349. it's your turn... Comments, suggestions and bug reports and fixes (no
  350. flames please) to
  351.  
  352. Bjorn Larsson
  353. INFOVOX AB
  354. Box 2503                      (bl@infovox.se)
  355. S-171 02 Solna
  356. SWEDEN
  357.